package com.web3.management.dto.request;

import lombok.Data;

import javax.validation.constraints.*;
import java.math.BigDecimal;

/**
 * 创建账号配置请求DTO
 *
 * @author Web3 Management Team
 */
@Data
public class CreateAccountConfigRequest {

    /**
     * 配置名称
     */
    @NotBlank(message = "配置名称不能为空")
    @Size(max = 100, message = "配置名称长度不能超过100个字符")
    private String configName;

    /**
     * 项目名称
     */
    @NotBlank(message = "项目名称不能为空")
    @Size(max = 100, message = "项目名称长度不能超过100个字符")
    private String projectName;

    /**
     * 基础资产代码
     */
    @NotBlank(message = "基础资产代码不能为空")
    @Size(max = 50, message = "基础资产代码长度不能超过50个字符")
    private String baseAsset;

    /**
     * 报价资产代码
     */
    @NotBlank(message = "报价资产代码不能为空")
    @Size(max = 50, message = "报价资产代码长度不能超过50个字符")
    private String quoteAsset = "USDT";

    /**
     * 区块链ID
     */
    @NotNull(message = "区块链ID不能为空")
    @Min(value = 1, message = "区块链ID必须大于0")
    private Integer chainId = 56;

    /**
     * 合约地址
     */
    @NotBlank(message = "合约地址不能为空")
    @Pattern(regexp = "^0x[a-fA-F0-9]{40}$", message = "合约地址格式不正确")
    private String contractAddress;

    /**
     * 购买金额
     */
    @DecimalMin(value = "0", inclusive = false, message = "购买金额必须大于0")
    private BigDecimal buyAmount;

    /**
     * 目标购买报价
     */
    @DecimalMin(value = "0", message = "目标购买报价不能为负数")
    private BigDecimal targetBuyQuote;

    /**
     * 是否启用代理
     */
    private Boolean proxyEnabled = false;

    /**
     * 代理配置JSON
     */
    private String proxyConfig;

    /**
     * 通知回调URL
     */
    @Size(max = 500, message = "通知URL长度不能超过500个字符")
    private String notifyUrl;

    /**
     * 自定义配置JSON
     */
    private String customConfig;

    /**
     * 配置备注
     */
    private String remark;
}